Data processing systems run a variety of different applications. Applications are computer programs (typically but not always in software form) that utilize a data processing system's resources, including its memory and processing capacity, to produce useful output. There are a wide variety of such applications, and one particular example of such an application is a database. Databases are computerized information storage and retrieval systems. There are many different types of databases. One particular type of database, for example, is a relational database that includes a relational database management system (RDBMS). A relational database management system (RDBMS) is a database management system (DBMS) which uses relational techniques for storing and retrieving data.
In a data processing system (e.g., a computer system, a network of computer systems, and the like) including multiple databases, each database is typically allocated memory space to perform database functions. For example, each database can allocate memory for buffer pools, shared and/or private sort space, database row or table locks, package cache, and so on. In a conventional data processing system including multiple databases, each database is typically unaware of the memory usage of the other databases (e.g., other databases on a same physical machine or other databases that are constrained to share the same (limited) pool of physical memory) in the data processing system. Consequently, in a conventional data processing system in which a database manager (e.g., a database management system (DBMS)) may be able to modify database memory usage for a corresponding database, a “greedy” database can consume most of the memory available in the database system, while another database in the data processing system or in another data processing system running on the same physical machine (which may have a greater need for additional memory usage) could end up being “starved” for memory.